<?php

class Pericias extends CI_Controller {

    function __construct() {
        parent::__construct();
        $this->datosusuario = $this->authentication->getDataLogged();
        $this->datoscausa = $this->session->userdata('causa');
        $this->load->model('m_demandado', 'demandado');
        $this->load->model('m_pericia', 'pericia');
        $this->load->model('m_documento', 'documento');
        $this->load->model('m_documento_x_pericia', 'documento_x_pericia');

        $causa = $this->session->userdata('causa');
        $this->authentication->puedeVerCausa($causa['id']);
    }

    /**
     * Listado de las novedades. Por ahora las q quiera listar, ya filtraremos...
     *
     * @return void
     */
    function index() {
        $valoraciones = getListValoreciones();

        $data = array(
            'titulo' => 'Listado de Pericias',
            'datosusuario' => $this->datosusuario,
            'datoscausa' => $this->datoscausa,
            'listado' => $this->pericia->getListPorCausaId($this->datoscausa['id']),
            'valoraciones' => $valoraciones,
            'seleccionar' => 'causas',
        );
        $this->load->view('templates/header', $data);
        $this->load->view('templates/topbar');
        $this->load->view('causas/leftbarcausa');
        $this->load->view('pericias/index', $data);
        $this->load->view('templates/footer');
    }

    /**
     * Crea un nuevo usuario.
     *
     * @return void
     */
    function nuevo() {
        $this->form_validation->set_rules($this->pericia->getValidacion());
        if ($this->form_validation->run() === FALSE) {
            $documentos = array();

            if (isset($_POST['submit'])) {
                set_message(array('3' => validation_errors()));
                $pericia = $_POST;

                if (isset($_POST['documento'])) {
                    foreach ($_POST['documento'] as $id) {
                        $this->documento->get($id);
                        $documentos[$id]->id = $this->documento->id;
                        $documentos[$id]->nombre = $this->documento->nombre;
                        $documentos[$id]->descripcion = $this->documento->descripcion;
                    }
                }
            } else {
                $pericia = $this->pericia->valoresPorDefecto();
            }

            $demandado_array = $this->demandado->getListPorCausaId($this->datoscausa['id']);

            $demandados[''] = 'Seleccione un Demandado Médico';

            foreach ($demandado_array as $value) {
                $demandados[$value->id] = $value->matricula . ' - ' . $value->nombre;
            }

            $valoraciones = array_merge((array) 'Seleccione la valoración', getListValoreciones());

            $data = array(
                'titulo' => 'Nueva Pericia',
                'datosusuario' => $this->datosusuario,
                'datoscausa' => $this->datoscausa,
                'pericia' => $pericia,
                'demandados' => $demandados,
                'valoraciones' => $valoraciones,
                'documentos' => $documentos,
                'pathdocumento' => PATH_UPLOAD . $this->datoscausa['id'] . '/',
                'seleccionar' => 'causas',
            );

            $this->load->view('templates/header', $data);
            $this->load->view('templates/topbar');
            $this->load->view('causas/leftbarcausa');
            $this->load->view('pericias/form');
            $this->load->view('templates/footer');
        } else {
            $this->load->model('m_logs', 'logs');
            $_POST['fecha'] = normal_to_database_date($_POST ['fecha']);

            $this->pericia->setAttributes($this->input);
            $this->pericia->usuarioId = $this->datosusuario['id'];
            $this->pericia->id = null;
            $this->pericia->save();
            $this->pericia->logs('nuevo', $this->datosusuario['id'], $this->logs);

            if (isset($_POST['documento'])) {
                foreach ($_POST['documento'] as $id) {
                    $this->documento_x_pericia->documentoId = $id;
                    $this->documento_x_pericia->periciaId = $this->pericia->id;
                    $this->documento_x_pericia->id = null;
                    $this->documento_x_pericia->save();
                }
            }

            set_message(array('info' => 'Se ha agregado una nueva pericia: "' . $this->pericia->titulo . '".'));

            redirect('causas/pericias/');
        }
    }

    /**
     * Edita un usuario.
     *
     * @param integer $id El ID del usuario para editar.
     * @return void
     */
    function editar($id = '') {
        if ($id == '')
            redirect($this->redirect);

        if ($this->pericia->get((int) $id)) {
            $this->form_validation->set_rules($this->pericia->getValidacion());
            if ($this->form_validation->run() === FALSE) {
                $documentos = array();

                if (isset($_POST['submit'])) {
                    set_message(array('3' => validation_errors()));
                    $pericia = $_POST;

                    if (isset($_POST['documento'])) {
                        foreach ($_POST['documento'] as $id) {
                            $this->documento->get($id);
                            $documentos[$id]->id = $this->documento->id;
                            $documentos[$id]->nombre = $this->documento->nombre;
                            $documentos[$id]->descripcion = $this->documento->descripcion;
                        }
                    }
                } else {
                    $this->pericia->fecha = database_to_normal_date($this->pericia->fecha);
                    $pericia = $this->pericia->doArray();

                    $documentos_x_notas = $this->documento_x_pericia->getList(array('periciaId' => $this->pericia->id));
                    if (isset($documentos_x_notas)) {
                        foreach ($documentos_x_notas as $documento_x_nota) {
                            $this->documento->get($documento_x_nota->documentoId);
                            $documentos[$this->documento->id]->id = $this->documento->id;
                            $documentos[$this->documento->id]->nombre = $this->documento->nombre;
                            $documentos[$this->documento->id]->descripcion = $this->documento->descripcion;
                        }
                    }
                }

                $demandado_array = $this->demandado->getListPorCausaId($this->datoscausa['id']);

                $demandados[''] = 'Seleccione un Demandado Médico';

                foreach ($demandado_array as $value) {
                    $demandados[$value->id] = $value->matricula . ' - ' . $value->nombre;
                }

                $valoraciones = array_merge((array) 'Seleccione la valoración', getListValoreciones());

                $data = array(
                    'titulo' => 'Editar Pericia',
                    'datosusuario' => $this->datosusuario,
                    'datoscausa' => $this->datoscausa,
                    'pericia' => $pericia,
                    'demandados' => $demandados,
                    'valoraciones' => $valoraciones,
                    'documentos' => $documentos,
                    'pathdocumento' => PATH_UPLOAD . $this->datoscausa['id'] . '/',
                    'seleccionar' => 'causas',
                    'id' => $id,
                );

                $this->load->view('templates/header', $data);
                $this->load->view('templates/topbar');
                $this->load->view('causas/leftbarcausa');
                $this->load->view('pericias/form');
                $this->load->view('templates/footer');
            } else {
                $this->load->model('m_logs', 'logs');
                $_POST['fecha'] = normal_to_database_date($_POST ['fecha']);
                $_POST['id'] = $this->pericia->id;

                $this->pericia->setAttributes($this->input);
                $this->pericia->usuarioId = $this->datosusuario['id'];
                $this->pericia->save();
                $this->pericia->logs('actualizar', $this->datosusuario['id'], $this->logs);

                $documentos_x_pericias = $this->documento_x_pericia->getList(array('periciaId' => $this->pericia->id));
                $documentos_adjuntos = array();
                if (isset($documentos_x_pericias)) {
                    foreach ($documentos_x_pericias as $documento_x_pericia) {
                        $documentos_adjuntos[] = $documento_x_pericia->documentoId;
                    }
                }

                if (isset($_POST['documento'])) {
                    foreach ($_POST['documento'] as $id) {
                        if (!in_array($id, $documentos_adjuntos)) {
                            $this->documento_x_pericia->documentoId = $id;
                            $this->documento_x_pericia->periciaId = $this->pericia->id;
                            $this->documento_x_pericia->id = null;
                            $this->documento_x_pericia->save();
                        }
                    }
                }
                set_message(array('info' => 'Se ha editado la pericia: "' . $this->pericia->titulo . '".'));

                redirect('causas/pericias/');
            }
        } else {
            redirect('causas/pericias/');
        }
    }

    /**
     * Elimina un usuario.
     *
     * @param integer $id El ID del usuario a eliminar.
     * @return void
     */
    function eliminar($id = '') {
        if ($id == '')
            redirect($this->redirect);

        if ($this->pericia->get((int) $id)) {
$this->load->model('m_logs', 'logs');
            $documentos_x_pericias = $this->documento_x_pericia->getList(array('periciaId' => $this->pericia->id));
            if (isset($documentos_x_pericias)) {
                foreach ($documentos_x_pericias as $documento_x_pericia) {
                    $this->documento_x_pericia->get($documento_x_pericia->id);
                    $this->documento_x_pericia->delete();
                }
            }
            $this->pericia->logs('eliminar', $this->datosusuario['id'], $this->logs);
            $this->pericia->delete();
            set_message(array('1' => 'Se ha eliminado la pericia.'));
        }

        redirect('causas/pericias/');
    }

    public function eliminar_documento() {

        if ($this->documento_x_pericia->getPorDocumentoId((int) $_GET['id'])) {
            $this->documento_x_pericia->delete();
        }
    }

}
